// =====================================================================================
// 
//       Filename:  Casella.hh
// 
//    Description:  Interfaccia della classe Casella
// 
//        Version:  1.0
//        Created:  25/06/2011 10:27:16
//       Revision:  none
//       Compiler:  g++
// 
//         Author:  Davide Poletti (), davide.pole@gmail.com
//					Paolo Pigato , p.pigato@hotmail.com	
//        Company:  P&P.cpp
// 
// =====================================================================================
#ifndef  CASELLA_INC
#define  CASELLA_INC

#include <iostream>
#include <utility>
using namespace std;
#include "Nave.hh"

class Casella
{
    private:
        //Distingue le caselle del mare proprio da quelle avversarie
        bool _mia;
        bool _sparata;

        //Se la casella è occupata da una nave punta ad essa, altrimenti a 0
        Nave* _nave_qui;

    public:
        //Il costruttore di default inizializza la casella come avversaria
        Casella();
        Casella(bool mia);
       	~Casella();

        bool sparata(){return _sparata;}
        Nave* nave_qui(){return _nave_qui;}

        /* Restituisce l'esito dello sparo secondo la seguente convenzione:
         * 0 = la casella aveva già subito un colpo
         * 1 = acqua
         * 2 = colpito
         * 3 = affondato
         */
        int subisci_sparo();

        //Fa puntare _nave_qui a nave
        void punta_nave(Nave* nave);

        //Stampa un carattere
        friend std::ostream& operator<<(std::ostream& os, const Casella& c);
};
#endif // ----- #ifndef CASELLA_INC  -----
